package ru.study.thinkin.chapter14;

public class LinkedStack<T> {
	private  Node<T> top = new Node<T>(); 
	
	private static class Node<T> {
		T item;
		Node<T> next;
		
		Node() {
			item = null;
			next = null;
		}		
		Node(T item, Node<T> next) {
			this.item = item;
			this.next = next;
		}
		
		boolean end() {
			return item==null && item == null;
		}
	}
	
	public void push (T item) {
		top = new Node<T>(item,top);
	}
	
	public T pop() {
		T result = top.item;
		if (!top.end()) {
			top = top.next;
		}		
		return result;
	}
	
	public static void main(String[] args) {
		LinkedStack<String> ls = new LinkedStack<String>();
		for(String s : "Who I am".split(" ")) {
			ls.push(s);
		}
		String ss;
		while((ss=ls.pop() )!=null) {
			System.out.println(ss);
		}
	}

}
